package com.ler.yrmall.product.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ler.yrmall.product.form.SkuForm;
import com.ler.yrmall.product.vo.SpuSaleMinPriceVO;
import com.ler.yrmall.product.vo.SkuVO;
import com.ler.yrmall.basic.Form;
import com.ler.yrmall.product.entity.SkuEntity;

import java.util.List;

/**
 * @author leron
 */
public interface SkuService extends IService<SkuEntity> {

    /**
     * 根据 spuId 查询列表
     * @param spuId
     * @return
     */
    List<SkuVO> listSkuBySpuId(Long spuId);

    /**
     * 列表
     * @param request
     * @return
     */
    List<SkuEntity> list(Form request);

    /**
     * 查询所属spu
     * @param skuId
     * @return
     */
    Long getSpuIdBySkuId(Long skuId);

    /**
     * 计算spu的销量、最低价格
     * @param spuIds
     * @return
     */
    List<SpuSaleMinPriceVO> computeSpuSaleAndMinPrice(List<Long> spuIds);

    /**
     * 根据skuId查询当前商品的秒杀信息
     * @param skuId
     * @return
     */
    SkuVO getSkuById(Long skuId);

    /**
     * 获取sku并随机选择spu组中的一条
     * @param form
     * @return
     */
    IPage<SkuVO> pageGroupBySpuId(SkuForm form);

    /**
     * 根据 spuId 删除
     * @param spuId
     */
    void deleteBySpuId(long spuId);

    /**
     * 删除 sku
     * @param id
     */
    void deleteSku(Long id);

}

